import Vue from 'vue'
import App from './App.vue'
// 按需引入
import {
  Button, Aside, Main, Header, Container,
  Menu, Submenu, MenuItemGroup, MenuItem,
  Dropdown, DropdownMenu, DropdownItem,
  Row, Col, Card,
  Table, TableColumn,
  Breadcrumb, BreadcrumbItem,
  Tag,
  Form, FormItem, Input, Select, Option, Switch, DatePicker,
  Dialog,
  Pagination,
  MessageBox,
  Message
} from "element-ui"

import 'assets/less/index.less'

import router from "router"
import store from "store"
import http from 'axios'
import '../api/mock'



Vue.config.productionTip = false

Vue.prototype.$http = http
Vue.prototype.$confirm = MessageBox.confirm
Vue.prototype.$message = Message

Vue.use(Button)
Vue.use(Aside)
Vue.use(Main)
Vue.use(Header)
Vue.use(Container)
Vue.use(Menu)
Vue.use(Submenu)
Vue.use(MenuItemGroup)
Vue.use(MenuItem)
Vue.use(Dropdown)
Vue.use(DropdownMenu)
Vue.use(DropdownItem)
Vue.use(Row)
Vue.use(Col)
Vue.use(Card)
Vue.use(Table)
Vue.use(TableColumn)
Vue.use(Breadcrumb)
Vue.use(BreadcrumbItem)
Vue.use(Tag)
Vue.use(Form)
Vue.use(FormItem)
Vue.use(Input)
Vue.use(Select)
Vue.use(Option)
Vue.use(Switch)
Vue.use(DatePicker)
Vue.use(Dialog)
Vue.use(Pagination)

// 路由导航守卫
router.beforeEach((to, from, next) => {
  // 为了防止页面刷新之后vuex丢失我们的token信息
  store.commit('getToken')
  const token = store.state.user.token
  if (!token && to.name !== "login") {
    next({ name: "login" })
  } else if (token && to.name === "login") {
    next({ name: "home" })
  }
  else {
    next()
  }
})

new Vue({
  router,
  store,
  render: h => h(App),
  //调用动态设置路由的方法 解决刷新白屏的问题
  created() {
    store.commit("addMenu", router)
  }
}).$mount('#app')
